ci: verify the Java SDK under GraalVM native-image#315
Merged
Conversation
A non-published consumer that drives the SDK's JNI + Jackson paths; CI builds it into a native image (metadata via the tracing agent) to verify GraalVM compatibility.
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (5)
📝 WalkthroughWalkthroughAdds a new ChangesGraalVM smoke validation
Sequence Diagram(s)CI native-image flow sequenceDiagram
participant GitHubActions
participant Gradle
participant metadataCopy
participant nativeCompile
participant graalvmSmokeBinary
GitHubActions->>Gradle: run GraalVM smoke tasks
Gradle->>metadataCopy: copy tracing-agent metadata into META-INF/native-image
Gradle->>nativeCompile: build the native image
GitHubActions->>graalvmSmokeBinary: execute the native binary
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes Possibly related PRs
Poem
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Comment |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
P15 (GraalVM): prove the Java SDK builds and runs under GraalVM
native-image. The SDK uses JNI + Jackson reflection that native-image can't infer statically, so this adds a CI job that generates the reachability metadata with the tracing agent and verifies it against a real native binary.How (web-backed library flow)
Per the native-build-tools docs, metadata is collected with the tracing agent and a smoke consumer verifies it:
:graalvm-smoke— a non-published subproject with aSmokemain that drives the SDK end to end (open SQLite queue → enqueue → run a worker →getResult→registerPeriodic/listPeriodic→listDead), exercising the JNI dispatch and every Jackson DTO path.graalvmjob —setup-graalvm, then-Pagent :graalvm-smoke:run(collect JNI/reflection/resource metadata) →metadataCopy→nativeCompile --no-fallback→ run the native binary, which printstaskito graalvm smoke ok.The agent/native-image tasks live in the smoke subproject, not the published root — applying the plugin to the root collided with the
maven-publishsourcesJartask.Verification
:graalvm-smoke:runis green on the JVM locally (real JNI + Jackson) — proves the smoke logic; onlynativeCompileneeds the GraalVM toolchain, which runs in CI../gradlew buildgreen with the new subproject (compile + Spotless + Checkstyle).Notes / follow-ups
publish-java.ymlalready wired).Summary by CodeRabbit
New Features
Bug Fixes
Chores